﻿/*!
 * 定义模块 Organization (组织管理) 中所有功能的服务 API。
 * 
 * Copyright (c), 上海沃恩信息科技有限公司.
 * All rights reserved.
 * Licensed under BSD (https://www.pittypat.work/bsd.html).
 */

/*
 * @param {Object} $    jQuery 命名空间。
 * @param {Object} $$   pittypat 命名空间。
 * @param {Object} _mod 模块 Organization (组织管理) 的命名空间。
 * 
 * 更多说明请参见：
 * https://www.pittypat.work/com/waln/pittypat/coding/help/_api.js.html。
 */
(function ($, $$, _mod) {
    'use strict';

    // 模块的 API 和 UI 命名空间
    var _api = _mod.api = _mod.api || {};

	/*
	 * 功能 Orgs (根组织列表) 的服务 API。
	 * 
	 * 输入(args):
	 * {}
	 * 
	 * 输出(success.result):
	 * // 根组织列表
	 * // 当前系统中注册的所有根组织的列表。
	 * list: [{
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 名称
	 *     // 组织或部门的名称。
	 *     name: {string?},
	 * 
	 *     // 描述
	 *     // 对组织或者部门的描述信息。
	 *     description: {string?},
	 * 
	 *     // 设立日期
	 *     // 组织或部门的设立日期。
	 *     createDate: {date?} 
	 * }, ...]
	 */
    _api.orgs = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/orgs',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 AddOrg (添加组织) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 名称
	 *     // 组织或部门的名称。
	 *     name: {string(50)?},
	 * 
	 *     // 描述
	 *     // 对组织或者部门的描述信息。
	 *     description: {string(2000)?},
	 * 
	 *     // 设立日期
	 *     // 组织或部门的设立日期。
	 *     createDate: {date?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 新创建的根组织
	 * // 新创建的根组织机构的信息。
	 * org: {
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 名称
	 *     // 组织或部门的名称。
	 *     name: {string?},
	 * 
	 *     // 描述
	 *     // 对组织或者部门的描述信息。
	 *     description: {string?},
	 * 
	 *     // 设立日期
	 *     // 组织或部门的设立日期。
	 *     createDate: {date?} 
	 * }
	 */
    _api.addOrg = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/addorg',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 name (名称)
            if (!e.args.name) {
                e.message = '没有提供有效的名称。';
                return;
            }
            
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 EditOrg (设置组织信息) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 名称
	 *     // 组织或部门的名称。
	 *     name: {string(50)?},
	 * 
	 *     // 描述
	 *     // 对组织或者部门的描述信息。
	 *     description: {string(2000)?},
	 * 
	 *     // 设立日期
	 *     // 组织或部门的设立日期。
	 *     createDate: {date?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 组织机构信息
	 * // 更新成功后组织机构的新信息。
	 * org: {
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 名称
	 *     // 组织或部门的名称。
	 *     name: {string?},
	 * 
	 *     // 描述
	 *     // 对组织或者部门的描述信息。
	 *     description: {string?},
	 * 
	 *     // 设立日期
	 *     // 组织或部门的设立日期。
	 *     createDate: {date?} 
	 * }
	 */
    _api.editOrg = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/editorg',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 id (Id)
            if (!$$.util.is.uuid(e.args.id)) {
                e.message = '没有提供有效的Id。';
                return;
            }

            // 验证 name (名称)
            if (!e.args.name) {
                e.message = '没有提供有效的名称。';
                return;
            }
            
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 DeleteOrg (删除组织) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // Id
	 *     id: {uuid?} 
	 * }
	 * 
	 * 输出(success.result):
	 * null
	 */
    _api.deleteOrg = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/deleteorg',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            // 验证 id
            if (!$$.util.is.uuid(e.args)) {
                e.message = '没有提供有效的Id。';
                return;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = {
                // Id
                id: e.args
            };
        }
    });

	/*
	 * 功能 DeptChildren (下级部门、岗位和用户) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 上级部门的 Id
	 *     // 部门、岗位、用户隶属的部门或组织的 Id。
	 *     deptId: {uuid?} 
	 * }
	 * 
	 * 输出(success.result):
	 * {
	 *     // 部门列表
	 *     // 隶属于目标部门或组织的下级部门的列表。
	 *     depts: [{
	 *         // Id
	 *         id: {uuid?},
	 * 
	 *         // 层级
	 *         // 根组织层级为 0，其他分别为 1、2...，最大层级为 255。
	 *         level: {int8?},
	 * 
	 *         // 上级部门的 Id
	 *         // 部门的上级机构的 Id，根组织没有上级部门，固定为 null。
	 *         parentId: {uuid?},
	 * 
	 *         // 根组织的 Id
	 *         // 部门隶属的根组织的 Id。
	 *         orgId: {uuid?},
	 * 
	 *         // 名称
	 *         // 组织或部门的名称。
	 *         name: {string?},
	 * 
	 *         // 描述
	 *         // 对组织或者部门的描述信息。
	 *         description: {string?},
	 * 
	 *         // 设立日期
	 *         // 组织或部门的设立日期。
	 *         createDate: {date?} 
	 *     }, ...],
	 * 
	 *     // 岗位列表
	 *     // 隶属于目标部门或组织的工作岗位的列表。
	 *     posts: [{
	 *         // Id
	 *         id: {uuid?},
	 * 
	 *         // 隶属部门的 Id
	 *         // 工作岗位隶属部门的 Id。
	 *         deptId: {uuid?},
	 * 
	 *         // 岗位名称
	 *         // 工作岗位的名称。
	 *         name: {string?},
	 * 
	 *         // 描述
	 *         // 对工作岗位的描述信息。
	 *         description: {string?},
	 * 
	 *         // 设立日期
	 *         // 设立此工作岗位的日期。
	 *         createDate: {date?} 
	 *     }, ...],
	 * 
	 *     // 用户列表
	 *     // 直接隶属于目标组织或部门的用户的列表。
	 *     users: [{
	 *         // 主键
	 *         pk: {int64?},
	 * 
	 *         // 用户的 Id
	 *         // 目标用户的 Id。
	 *         userId: {uuid?},
	 * 
	 *         // 工作岗位的 Id
	 *         // 目标工作岗位的 Id。
	 *         postId: {uuid?},
	 * 
	 *         // 隶属部门的 Id
	 *         // 工作岗位隶属的部门的 Id。
	 *         deptId: {uuid?},
	 * 
	 *         // 根组织的 Id
	 *         // 目标工作岗位隶属的根组织的 Id。
	 *         orgId: {uuid?},
	 * 
	 *         // 分配时间
	 *         // 设立用户目标工作岗位的时间。
	 *         createTime: {datetime?},
	 * 
	 *         // 描述
	 *         // 对用户工作岗位的描述。
	 *         description: {string?},
	 * 
	 *         // 登录名称
	 *         // 用户的登录名称。
	 *         loginName: {string?},
	 * 
	 *         // 编号
	 *         // 用户的编号，编号是唯一的，比如工号。登录时可以使用编号登录。
	 *         no: {string?},
	 * 
	 *         // 用户名称
	 *         // 用户的友好显示名称。
	 *         name: {string?},
	 * 
	 *         // 头像路径
	 *         // 用户头像文件的虚拟路径。
	 *         faceUrl: {string?},
	 * 
	 *         // 手机号码
	 *         // 用户的手机号码，如果提供了手机号码，必须是唯一的。
	 *         mobile: {string?},
	 * 
	 *         // 电子邮件地址
	 *         // 用户的电子邮件地址。如果提供了电子邮件地址，则必须是唯一的。
	 *         email: {string?},
	 * 
	 *         // 用户创建时间
	 *         // 创建用户账号的时间。
	 *         regTime: {datetime?},
	 * 
	 *         // 锁定时间
	 *         // 用户账号被锁定的时间。
	 *         lockTime: {datetime?},
	 * 
	 *         // 登录时间
	 *         // 用户最后一次登录系统的时间。
	 *         loginTime: {datetime?},
	 * 
	 *         // 登录后首页
	 *         // 用户在登录后进入的页面，由用户自己配置。支持 '~' 作为前缀的路径格式。
	 *         loginHomeUrl: {string?},
	 * 
	 *         // 登录后首页说明
	 *         // 对用户登录后首先进入的页面的说明信息。
	 *         loginHomeDescription: {string?} 
	 *     }, ...]
	 * }
	 */
    _api.deptChildren = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/deptchildren',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            // 验证 deptId
            if (!$$.util.is.uuid(e.args)) {
                e.message = '没有提供有效的上级部门的 Id。';
                return;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = {
                // 上级部门的 Id
                deptId: e.args
            };
        }
    });

	/*
	 * 功能 AddDept (添加部门) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 上级部门的 Id
	 *     // 部门的上级机构的 Id，根组织没有上级部门，固定为 null。
	 *     parentId: {uuid?},
	 * 
	 *     // 名称
	 *     // 组织或部门的名称。
	 *     name: {string(50)?},
	 * 
	 *     // 描述
	 *     // 对组织或者部门的描述信息。
	 *     description: {string(2000)?},
	 * 
	 *     // 设立日期
	 *     // 组织或部门的设立日期。
	 *     createDate: {date?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 新添加的部门
	 * // 添加成功后新部门的信息。
	 * dept: {
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 层级
	 *     // 根组织层级为 0，其他分别为 1、2...，最大层级为 255。
	 *     level: {int8?},
	 * 
	 *     // 上级部门的 Id
	 *     // 部门的上级机构的 Id，根组织没有上级部门，固定为 null。
	 *     parentId: {uuid?},
	 * 
	 *     // 根组织的 Id
	 *     // 部门隶属的根组织的 Id。
	 *     orgId: {uuid?},
	 * 
	 *     // 名称
	 *     // 组织或部门的名称。
	 *     name: {string?},
	 * 
	 *     // 描述
	 *     // 对组织或者部门的描述信息。
	 *     description: {string?},
	 * 
	 *     // 设立日期
	 *     // 组织或部门的设立日期。
	 *     createDate: {date?} 
	 * }
	 */
    _api.addDept = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/adddept',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 parentId (上级部门的 Id)
            if (!$$.util.is.uuid(e.args.parentId)) {
                e.message = '没有提供有效的上级部门的 Id。';
                return;
            }

            // 验证 name (名称)
            if (!e.args.name) {
                e.message = '没有提供有效的名称。';
                return;
            }
            
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 EditDept (设置部门资料) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 名称
	 *     // 组织或部门的名称。
	 *     name: {string(50)?},
	 * 
	 *     // 描述
	 *     // 对组织或者部门的描述信息。
	 *     description: {string(2000)?},
	 * 
	 *     // 设立日期
	 *     // 组织或部门的设立日期。
	 *     createDate: {date?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 部门信息
	 * // 信息更新成功后返回部门的新信息。
	 * dept: {
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 层级
	 *     // 根组织层级为 0，其他分别为 1、2...，最大层级为 255。
	 *     level: {int8?},
	 * 
	 *     // 上级部门的 Id
	 *     // 部门的上级机构的 Id，根组织没有上级部门，固定为 null。
	 *     parentId: {uuid?},
	 * 
	 *     // 根组织的 Id
	 *     // 部门隶属的根组织的 Id。
	 *     orgId: {uuid?},
	 * 
	 *     // 名称
	 *     // 组织或部门的名称。
	 *     name: {string?},
	 * 
	 *     // 描述
	 *     // 对组织或者部门的描述信息。
	 *     description: {string?},
	 * 
	 *     // 设立日期
	 *     // 组织或部门的设立日期。
	 *     createDate: {date?} 
	 * }
	 */
    _api.editDept = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/editdept',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 id (Id)
            if (!$$.util.is.uuid(e.args.id)) {
                e.message = '没有提供有效的Id。';
                return;
            }

            // 验证 name (名称)
            if (!e.args.name) {
                e.message = '没有提供有效的名称。';
                return;
            }
            
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 DeleteDept (删除部门) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // Id
	 *     id: {uuid?} 
	 * }
	 * 
	 * 输出(success.result):
	 * null
	 */
    _api.deleteDept = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/deletedept',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            // 验证 id
            if (!$$.util.is.uuid(e.args)) {
                e.message = '没有提供有效的Id。';
                return;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = {
                // Id
                id: e.args
            };
        }
    });

	/*
	 * 功能 AddPost (添加工作岗位) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 隶属部门的 Id
	 *     // 工作岗位隶属部门的 Id。
	 *     deptId: {uuid?},
	 * 
	 *     // 岗位名称
	 *     // 工作岗位的名称。
	 *     name: {string(50)?},
	 * 
	 *     // 描述
	 *     // 对工作岗位的描述信息。
	 *     description: {string(2000)?},
	 * 
	 *     // 设立日期
	 *     // 设立此工作岗位的日期。
	 *     createDate: {date?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 工作岗位信息
	 * // 添加成功后返回新工作岗位的信息。
	 * post: {
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 隶属部门的 Id
	 *     // 工作岗位隶属部门的 Id。
	 *     deptId: {uuid?},
	 * 
	 *     // 岗位名称
	 *     // 工作岗位的名称。
	 *     name: {string?},
	 * 
	 *     // 描述
	 *     // 对工作岗位的描述信息。
	 *     description: {string?},
	 * 
	 *     // 设立日期
	 *     // 设立此工作岗位的日期。
	 *     createDate: {date?} 
	 * }
	 */
    _api.addPost = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/addpost',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 deptId (隶属部门的 Id)
            if (!$$.util.is.uuid(e.args.deptId)) {
                e.message = '没有提供有效的隶属部门的 Id。';
                return;
            }

            // 验证 name (岗位名称)
            if (!e.args.name) {
                e.message = '没有提供有效的岗位名称。';
                return;
            }
            
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 EditPost (设置工作岗位) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 岗位名称
	 *     // 工作岗位的名称。
	 *     name: {string(50)?},
	 * 
	 *     // 描述
	 *     // 对工作岗位的描述信息。
	 *     description: {string(2000)?},
	 * 
	 *     // 设立日期
	 *     // 设立此工作岗位的日期。
	 *     createDate: {date?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 工作岗位信息
	 * // 更新成功后返回工作岗位的信息。
	 * post: {
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 隶属部门的 Id
	 *     // 工作岗位隶属部门的 Id。
	 *     deptId: {uuid?},
	 * 
	 *     // 岗位名称
	 *     // 工作岗位的名称。
	 *     name: {string?},
	 * 
	 *     // 描述
	 *     // 对工作岗位的描述信息。
	 *     description: {string?},
	 * 
	 *     // 设立日期
	 *     // 设立此工作岗位的日期。
	 *     createDate: {date?} 
	 * }
	 */
    _api.editPost = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/editpost',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 id (Id)
            if (!$$.util.is.uuid(e.args.id)) {
                e.message = '没有提供有效的Id。';
                return;
            }

            // 验证 name (岗位名称)
            if (!e.args.name) {
                e.message = '没有提供有效的岗位名称。';
                return;
            }
            
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 DeletePost (删除工作岗位) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // Id
	 *     id: {uuid?} 
	 * }
	 * 
	 * 输出(success.result):
	 * null
	 */
    _api.deletePost = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/deletepost',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            // 验证 id
            if (!$$.util.is.uuid(e.args)) {
                e.message = '没有提供有效的Id。';
                return;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = {
                // Id
                id: e.args
            };
        }
    });

	/*
	 * 功能 NewUser (添加新用户) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 登录名称
	 *     // 用户的登录名称。
	 *     loginName: {string(50)?},
	 * 
	 *     // 登录密码明文
	 *     // 用户登录密码的明文。
	 *     password: {string(30)?},
	 * 
	 *     // 编号
	 *     // 用户的编号，编号是唯一的，比如工号。登录时可以使用编号登录。
	 *     no: {string(20)?},
	 * 
	 *     // 用户名称
	 *     // 用户的友好显示名称。
	 *     name: {string(50)?},
	 * 
	 *     // 手机号码
	 *     // 用户的手机号码，如果提供了手机号码，必须是唯一的。
	 *     mobile: {string(20)?},
	 * 
	 *     // 电子邮件地址
	 *     // 用户的电子邮件地址。如果提供了电子邮件地址，则必须是唯一的。
	 *     email: {string(50)?},
	 * 
	 *     // 登录后首页
	 *     // 用户在登录后进入的页面，由用户自己配置。支持 '~' 作为前缀的路径格式。
	 *     loginHomeUrl: {string(200)?},
	 * 
	 *     // 登录后首页说明
	 *     // 对用户登录后首先进入的页面的说明信息。
	 *     loginHomeDescription: {string(100)?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 新用户
	 * // 如果添加成功，返回新用户的用户信息。
	 * user: {
	 *     // 主键
	 *     pk: {int64?},
	 * 
	 *     // 用户的 Id
	 *     // 目标用户的 Id。
	 *     userId: {uuid?},
	 * 
	 *     // 工作岗位的 Id
	 *     // 目标工作岗位的 Id。
	 *     postId: {uuid?},
	 * 
	 *     // 隶属部门的 Id
	 *     // 工作岗位隶属的部门的 Id。
	 *     deptId: {uuid?},
	 * 
	 *     // 根组织的 Id
	 *     // 目标工作岗位隶属的根组织的 Id。
	 *     orgId: {uuid?},
	 * 
	 *     // 分配时间
	 *     // 设立用户目标工作岗位的时间。
	 *     createTime: {datetime?},
	 * 
	 *     // 描述
	 *     // 对用户工作岗位的描述。
	 *     description: {string?},
	 * 
	 *     // 登录名称
	 *     // 用户的登录名称。
	 *     loginName: {string?},
	 * 
	 *     // 编号
	 *     // 用户的编号，编号是唯一的，比如工号。登录时可以使用编号登录。
	 *     no: {string?},
	 * 
	 *     // 用户名称
	 *     // 用户的友好显示名称。
	 *     name: {string?},
	 * 
	 *     // 头像路径
	 *     // 用户头像文件的虚拟路径。
	 *     faceUrl: {string?},
	 * 
	 *     // 手机号码
	 *     // 用户的手机号码，如果提供了手机号码，必须是唯一的。
	 *     mobile: {string?},
	 * 
	 *     // 电子邮件地址
	 *     // 用户的电子邮件地址。如果提供了电子邮件地址，则必须是唯一的。
	 *     email: {string?},
	 * 
	 *     // 用户创建时间
	 *     // 创建用户账号的时间。
	 *     regTime: {datetime?},
	 * 
	 *     // 锁定时间
	 *     // 用户账号被锁定的时间。
	 *     lockTime: {datetime?},
	 * 
	 *     // 登录时间
	 *     // 用户最后一次登录系统的时间。
	 *     loginTime: {datetime?},
	 * 
	 *     // 登录后首页
	 *     // 用户在登录后进入的页面，由用户自己配置。支持 '~' 作为前缀的路径格式。
	 *     loginHomeUrl: {string?},
	 * 
	 *     // 登录后首页说明
	 *     // 对用户登录后首先进入的页面的说明信息。
	 *     loginHomeDescription: {string?} 
	 * }
	 */
    _api.newUser = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/newuser',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 loginName (登录名称)
            if (!e.args.loginName) {
                e.message = '没有提供有效的登录名称。';
                return;
            }

            // 验证 password (登录密码明文)
            if (!e.args.password) {
                e.message = '没有提供有效的登录密码明文。';
                return;
            }
            
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 SearchDeptUsers (搜索用户) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 页码
	 *     pageIndex: {int64?},
	 * 
	 *     // 页面尺寸
	 *     pageSize: {int64?},
	 * 
	 *     // 排序名称
	 *     orderName: {string(30)?},
	 * 
	 *     // 排序方向
	 *     orderDirection: {string(4)?},
	 * 
	 *     // 关键词
	 *     // 搜索关键词。
	 *     keyword: {string(50)?},
	 * 
	 *     // 隶属部门的 Id
	 *     // 工作岗位隶属的部门的 Id。
	 *     deptId: {uuid?} 
	 * }
	 * 
	 * 输出(success.result):
	 * {
	 *     // 总行数
	 *     totalRows: {int64?},
	 * 
	 *     // 用户列表
	 *     // 满足条件的用户列表。
	 *     users: [{
	 *         // 主键
	 *         pk: {int64?},
	 * 
	 *         // 用户的 Id
	 *         // 目标用户的 Id。
	 *         userId: {uuid?},
	 * 
	 *         // 工作岗位的 Id
	 *         // 目标工作岗位的 Id。
	 *         postId: {uuid?},
	 * 
	 *         // 隶属部门的 Id
	 *         // 工作岗位隶属的部门的 Id。
	 *         deptId: {uuid?},
	 * 
	 *         // 根组织的 Id
	 *         // 目标工作岗位隶属的根组织的 Id。
	 *         orgId: {uuid?},
	 * 
	 *         // 分配时间
	 *         // 设立用户目标工作岗位的时间。
	 *         createTime: {datetime?},
	 * 
	 *         // 描述
	 *         // 对用户工作岗位的描述。
	 *         description: {string?},
	 * 
	 *         // 登录名称
	 *         // 用户的登录名称。
	 *         loginName: {string?},
	 * 
	 *         // 编号
	 *         // 用户的编号，编号是唯一的，比如工号。登录时可以使用编号登录。
	 *         no: {string?},
	 * 
	 *         // 用户名称
	 *         // 用户的友好显示名称。
	 *         name: {string?},
	 * 
	 *         // 头像路径
	 *         // 用户头像文件的虚拟路径。
	 *         faceUrl: {string?},
	 * 
	 *         // 手机号码
	 *         // 用户的手机号码，如果提供了手机号码，必须是唯一的。
	 *         mobile: {string?},
	 * 
	 *         // 电子邮件地址
	 *         // 用户的电子邮件地址。如果提供了电子邮件地址，则必须是唯一的。
	 *         email: {string?},
	 * 
	 *         // 用户创建时间
	 *         // 创建用户账号的时间。
	 *         regTime: {datetime?},
	 * 
	 *         // 锁定时间
	 *         // 用户账号被锁定的时间。
	 *         lockTime: {datetime?},
	 * 
	 *         // 登录时间
	 *         // 用户最后一次登录系统的时间。
	 *         loginTime: {datetime?},
	 * 
	 *         // 登录后首页
	 *         // 用户在登录后进入的页面，由用户自己配置。支持 '~' 作为前缀的路径格式。
	 *         loginHomeUrl: {string?},
	 * 
	 *         // 登录后首页说明
	 *         // 对用户登录后首先进入的页面的说明信息。
	 *         loginHomeDescription: {string?} 
	 *     }, ...]
	 * }
	 */
    _api.searchDeptUsers = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/searchdeptusers',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 pageIndex (页码)
            if (!$$.util.is.int(e.args.pageIndex, 1, Number.MAX_SAFE_INTEGER)) {
                e.args.pageIndex = 1; // 默认页码 1
            }

            // 验证 pageSize (页面尺寸)
            if (!$$.util.is.int(e.args.pageSize, 1, 1000)) {
                e.args.pageSize = 8; // 默认页面尺寸 8
            }

            // 验证 orderName (排序名称)
            if (!$$.util.is.identifier(e.args.orderName)) {
                e.args.orderName = 'name'; // 默认排序名称
            }

            // 验证 orderDirection (排序方向)
            if (!$$.util.is.orderDirection(e.args.orderDirection)) {
                e.args.orderDirection = 'asc'; // 默认排序方向
            }
            
            // 验证 deptId (隶属部门的 Id)
            if (!$$.util.is.uuid(e.args.deptId)) {
                e.message = '没有提供有效的隶属部门的 Id。';
                return;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 AddDeptUsers (添加部门用户) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 隶属部门的 Id
	 *     // 工作岗位隶属的部门的 Id。
	 *     deptId: {uuid?},
	 * 
	 *     // 目标用户的 Id 的列表
	 *     // 目标用户的 Id 的列表，多个之间使用 ',' 分隔。
	 *     ids: {string(1000)?},
	 * 
	 *     // 描述
	 *     // 对用户工作岗位的描述。
	 *     description: {string(2000)?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 用户列表
	 * // 新添加的用户账号的列表。
	 * users: [{
	 *     // 主键
	 *     pk: {int64?},
	 * 
	 *     // 用户的 Id
	 *     // 目标用户的 Id。
	 *     userId: {uuid?},
	 * 
	 *     // 工作岗位的 Id
	 *     // 目标工作岗位的 Id。
	 *     postId: {uuid?},
	 * 
	 *     // 隶属部门的 Id
	 *     // 工作岗位隶属的部门的 Id。
	 *     deptId: {uuid?},
	 * 
	 *     // 根组织的 Id
	 *     // 目标工作岗位隶属的根组织的 Id。
	 *     orgId: {uuid?},
	 * 
	 *     // 分配时间
	 *     // 设立用户目标工作岗位的时间。
	 *     createTime: {datetime?},
	 * 
	 *     // 描述
	 *     // 对用户工作岗位的描述。
	 *     description: {string?},
	 * 
	 *     // 登录名称
	 *     // 用户的登录名称。
	 *     loginName: {string?},
	 * 
	 *     // 编号
	 *     // 用户的编号，编号是唯一的，比如工号。登录时可以使用编号登录。
	 *     no: {string?},
	 * 
	 *     // 用户名称
	 *     // 用户的友好显示名称。
	 *     name: {string?},
	 * 
	 *     // 头像路径
	 *     // 用户头像文件的虚拟路径。
	 *     faceUrl: {string?},
	 * 
	 *     // 手机号码
	 *     // 用户的手机号码，如果提供了手机号码，必须是唯一的。
	 *     mobile: {string?},
	 * 
	 *     // 电子邮件地址
	 *     // 用户的电子邮件地址。如果提供了电子邮件地址，则必须是唯一的。
	 *     email: {string?},
	 * 
	 *     // 用户创建时间
	 *     // 创建用户账号的时间。
	 *     regTime: {datetime?},
	 * 
	 *     // 锁定时间
	 *     // 用户账号被锁定的时间。
	 *     lockTime: {datetime?},
	 * 
	 *     // 登录时间
	 *     // 用户最后一次登录系统的时间。
	 *     loginTime: {datetime?},
	 * 
	 *     // 登录后首页
	 *     // 用户在登录后进入的页面，由用户自己配置。支持 '~' 作为前缀的路径格式。
	 *     loginHomeUrl: {string?},
	 * 
	 *     // 登录后首页说明
	 *     // 对用户登录后首先进入的页面的说明信息。
	 *     loginHomeDescription: {string?} 
	 * }, ...]
	 */
    _api.addDeptUsers = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/adddeptusers',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 deptId (隶属部门的 Id)
            if (!$$.util.is.uuid(e.args.deptId)) {
                e.message = '没有提供有效的隶属部门的 Id。';
                return;
            }

            // 验证 ids (目标用户的 Id 的列表)
            if (!e.args.ids) {
                e.message = '没有提供有效的目标用户的 Id 的列表。';
                return;
            }
            
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 PostUsers (工作岗位用户列表) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 工作岗位的 Id
	 *     // 目标工作岗位的 Id。
	 *     postId: {uuid?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 用户列表
	 * // 隶属于目标工作岗位的用户列表。
	 * list: [{
	 *     // 主键
	 *     pk: {int64?},
	 * 
	 *     // 用户的 Id
	 *     // 目标用户的 Id。
	 *     userId: {uuid?},
	 * 
	 *     // 工作岗位的 Id
	 *     // 目标工作岗位的 Id。
	 *     postId: {uuid?},
	 * 
	 *     // 隶属部门的 Id
	 *     // 工作岗位隶属的部门的 Id。
	 *     deptId: {uuid?},
	 * 
	 *     // 根组织的 Id
	 *     // 目标工作岗位隶属的根组织的 Id。
	 *     orgId: {uuid?},
	 * 
	 *     // 分配时间
	 *     // 设立用户目标工作岗位的时间。
	 *     createTime: {datetime?},
	 * 
	 *     // 描述
	 *     // 对用户工作岗位的描述。
	 *     description: {string?},
	 * 
	 *     // 登录名称
	 *     // 用户的登录名称。
	 *     loginName: {string?},
	 * 
	 *     // 编号
	 *     // 用户的编号，编号是唯一的，比如工号。登录时可以使用编号登录。
	 *     no: {string?},
	 * 
	 *     // 用户名称
	 *     // 用户的友好显示名称。
	 *     name: {string?},
	 * 
	 *     // 头像路径
	 *     // 用户头像文件的虚拟路径。
	 *     faceUrl: {string?},
	 * 
	 *     // 手机号码
	 *     // 用户的手机号码，如果提供了手机号码，必须是唯一的。
	 *     mobile: {string?},
	 * 
	 *     // 电子邮件地址
	 *     // 用户的电子邮件地址。如果提供了电子邮件地址，则必须是唯一的。
	 *     email: {string?},
	 * 
	 *     // 用户创建时间
	 *     // 创建用户账号的时间。
	 *     regTime: {datetime?},
	 * 
	 *     // 锁定时间
	 *     // 用户账号被锁定的时间。
	 *     lockTime: {datetime?},
	 * 
	 *     // 登录时间
	 *     // 用户最后一次登录系统的时间。
	 *     loginTime: {datetime?},
	 * 
	 *     // 登录后首页
	 *     // 用户在登录后进入的页面，由用户自己配置。支持 '~' 作为前缀的路径格式。
	 *     loginHomeUrl: {string?},
	 * 
	 *     // 登录后首页说明
	 *     // 对用户登录后首先进入的页面的说明信息。
	 *     loginHomeDescription: {string?} 
	 * }, ...]
	 */
    _api.postUsers = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/postusers',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            // 验证 postId
            if (!$$.util.is.uuid(e.args)) {
                e.message = '没有提供有效的工作岗位的 Id。';
                return;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = {
                // 工作岗位的 Id
                postId: e.args
            };
        }
    });

	/*
	 * 功能 SearchPostUsers (搜索岗位用户) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 页码
	 *     pageIndex: {int64?},
	 * 
	 *     // 页面尺寸
	 *     pageSize: {int64?},
	 * 
	 *     // 排序名称
	 *     orderName: {string(30)?},
	 * 
	 *     // 排序方向
	 *     orderDirection: {string(4)?},
	 * 
	 *     // 关键词
	 *     // 搜索关键词。
	 *     keyword: {string(50)?},
	 * 
	 *     // 工作岗位的 Id
	 *     // 目标工作岗位的 Id。
	 *     postId: {uuid?} 
	 * }
	 * 
	 * 输出(success.result):
	 * {
	 *     // 总行数
	 *     totalRows: {int64?},
	 * 
	 *     // 用户列表
	 *     // 满足条件的用户列表。
	 *     users: [{
	 *         // 主键
	 *         pk: {int64?},
	 * 
	 *         // 用户的 Id
	 *         // 目标用户的 Id。
	 *         userId: {uuid?},
	 * 
	 *         // 工作岗位的 Id
	 *         // 目标工作岗位的 Id。
	 *         postId: {uuid?},
	 * 
	 *         // 隶属部门的 Id
	 *         // 工作岗位隶属的部门的 Id。
	 *         deptId: {uuid?},
	 * 
	 *         // 根组织的 Id
	 *         // 目标工作岗位隶属的根组织的 Id。
	 *         orgId: {uuid?},
	 * 
	 *         // 分配时间
	 *         // 设立用户目标工作岗位的时间。
	 *         createTime: {datetime?},
	 * 
	 *         // 描述
	 *         // 对用户工作岗位的描述。
	 *         description: {string?},
	 * 
	 *         // 登录名称
	 *         // 用户的登录名称。
	 *         loginName: {string?},
	 * 
	 *         // 编号
	 *         // 用户的编号，编号是唯一的，比如工号。登录时可以使用编号登录。
	 *         no: {string?},
	 * 
	 *         // 用户名称
	 *         // 用户的友好显示名称。
	 *         name: {string?},
	 * 
	 *         // 头像路径
	 *         // 用户头像文件的虚拟路径。
	 *         faceUrl: {string?},
	 * 
	 *         // 手机号码
	 *         // 用户的手机号码，如果提供了手机号码，必须是唯一的。
	 *         mobile: {string?},
	 * 
	 *         // 电子邮件地址
	 *         // 用户的电子邮件地址。如果提供了电子邮件地址，则必须是唯一的。
	 *         email: {string?},
	 * 
	 *         // 用户创建时间
	 *         // 创建用户账号的时间。
	 *         regTime: {datetime?},
	 * 
	 *         // 锁定时间
	 *         // 用户账号被锁定的时间。
	 *         lockTime: {datetime?},
	 * 
	 *         // 登录时间
	 *         // 用户最后一次登录系统的时间。
	 *         loginTime: {datetime?},
	 * 
	 *         // 登录后首页
	 *         // 用户在登录后进入的页面，由用户自己配置。支持 '~' 作为前缀的路径格式。
	 *         loginHomeUrl: {string?},
	 * 
	 *         // 登录后首页说明
	 *         // 对用户登录后首先进入的页面的说明信息。
	 *         loginHomeDescription: {string?} 
	 *     }, ...]
	 * }
	 */
    _api.searchPostUsers = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/searchpostusers',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 pageIndex (页码)
            if (!$$.util.is.int(e.args.pageIndex, 1, Number.MAX_SAFE_INTEGER)) {
                e.args.pageIndex = 1; // 默认页码 1
            }

            // 验证 pageSize (页面尺寸)
            if (!$$.util.is.int(e.args.pageSize, 1, 1000)) {
                e.args.pageSize = 8; // 默认页面尺寸 8
            }

            // 验证 orderName (排序名称)
            if (!$$.util.is.identifier(e.args.orderName)) {
                e.args.orderName = 'name'; // 默认排序名称
            }

            // 验证 orderDirection (排序方向)
            if (!$$.util.is.orderDirection(e.args.orderDirection)) {
                e.args.orderDirection = 'asc'; // 默认排序方向
            }
            
            // 验证 postId (工作岗位的 Id)
            if (!$$.util.is.uuid(e.args.postId)) {
                e.message = '没有提供有效的工作岗位的 Id。';
                return;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 AddPostUsers (添加岗位用户) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 工作岗位的 Id
	 *     // 目标工作岗位的 Id。
	 *     postId: {uuid?},
	 * 
	 *     // 目标用户的 Id 列表
	 *     // 目标用户的 Id 的列表，多个之间使用 ',' 分隔。
	 *     ids: {string(1000)?},
	 * 
	 *     // 描述
	 *     // 对用户工作岗位的描述。
	 *     description: {string(2000)?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 用户列表
	 * // 添加成功后返回岗位用户的列表。
	 * users: [{
	 *     // 主键
	 *     pk: {int64?},
	 * 
	 *     // 用户的 Id
	 *     // 目标用户的 Id。
	 *     userId: {uuid?},
	 * 
	 *     // 工作岗位的 Id
	 *     // 目标工作岗位的 Id。
	 *     postId: {uuid?},
	 * 
	 *     // 隶属部门的 Id
	 *     // 工作岗位隶属的部门的 Id。
	 *     deptId: {uuid?},
	 * 
	 *     // 根组织的 Id
	 *     // 目标工作岗位隶属的根组织的 Id。
	 *     orgId: {uuid?},
	 * 
	 *     // 分配时间
	 *     // 设立用户目标工作岗位的时间。
	 *     createTime: {datetime?},
	 * 
	 *     // 描述
	 *     // 对用户工作岗位的描述。
	 *     description: {string?},
	 * 
	 *     // 登录名称
	 *     // 用户的登录名称。
	 *     loginName: {string?},
	 * 
	 *     // 编号
	 *     // 用户的编号，编号是唯一的，比如工号。登录时可以使用编号登录。
	 *     no: {string?},
	 * 
	 *     // 用户名称
	 *     // 用户的友好显示名称。
	 *     name: {string?},
	 * 
	 *     // 头像路径
	 *     // 用户头像文件的虚拟路径。
	 *     faceUrl: {string?},
	 * 
	 *     // 手机号码
	 *     // 用户的手机号码，如果提供了手机号码，必须是唯一的。
	 *     mobile: {string?},
	 * 
	 *     // 电子邮件地址
	 *     // 用户的电子邮件地址。如果提供了电子邮件地址，则必须是唯一的。
	 *     email: {string?},
	 * 
	 *     // 用户创建时间
	 *     // 创建用户账号的时间。
	 *     regTime: {datetime?},
	 * 
	 *     // 锁定时间
	 *     // 用户账号被锁定的时间。
	 *     lockTime: {datetime?},
	 * 
	 *     // 登录时间
	 *     // 用户最后一次登录系统的时间。
	 *     loginTime: {datetime?},
	 * 
	 *     // 登录后首页
	 *     // 用户在登录后进入的页面，由用户自己配置。支持 '~' 作为前缀的路径格式。
	 *     loginHomeUrl: {string?},
	 * 
	 *     // 登录后首页说明
	 *     // 对用户登录后首先进入的页面的说明信息。
	 *     loginHomeDescription: {string?} 
	 * }, ...]
	 */
    _api.addPostUsers = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/addpostusers',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 postId (工作岗位的 Id)
            if (!$$.util.is.uuid(e.args.postId)) {
                e.message = '没有提供有效的工作岗位的 Id。';
                return;
            }

            // 验证 ids (目标用户的 Id 列表)
            if (!e.args.ids) {
                e.message = '没有提供有效的目标用户的 Id 列表。';
                return;
            }
            
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 EditUser (设置用户) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 主键
	 *     pk: {int64?},
	 * 
	 *     // 描述
	 *     // 对用户工作岗位的描述。
	 *     description: {string(2000)?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 用户信息
	 * // 更新成功后返回用户信息。
	 * info: {
	 *     // 主键
	 *     pk: {int64?},
	 * 
	 *     // 用户的 Id
	 *     // 目标用户的 Id。
	 *     userId: {uuid?},
	 * 
	 *     // 工作岗位的 Id
	 *     // 目标工作岗位的 Id。
	 *     postId: {uuid?},
	 * 
	 *     // 隶属部门的 Id
	 *     // 工作岗位隶属的部门的 Id。
	 *     deptId: {uuid?},
	 * 
	 *     // 根组织的 Id
	 *     // 目标工作岗位隶属的根组织的 Id。
	 *     orgId: {uuid?},
	 * 
	 *     // 分配时间
	 *     // 设立用户目标工作岗位的时间。
	 *     createTime: {datetime?},
	 * 
	 *     // 描述
	 *     // 对用户工作岗位的描述。
	 *     description: {string?},
	 * 
	 *     // 登录名称
	 *     // 用户的登录名称。
	 *     loginName: {string?},
	 * 
	 *     // 编号
	 *     // 用户的编号，编号是唯一的，比如工号。登录时可以使用编号登录。
	 *     no: {string?},
	 * 
	 *     // 用户名称
	 *     // 用户的友好显示名称。
	 *     name: {string?},
	 * 
	 *     // 头像路径
	 *     // 用户头像文件的虚拟路径。
	 *     faceUrl: {string?},
	 * 
	 *     // 手机号码
	 *     // 用户的手机号码，如果提供了手机号码，必须是唯一的。
	 *     mobile: {string?},
	 * 
	 *     // 电子邮件地址
	 *     // 用户的电子邮件地址。如果提供了电子邮件地址，则必须是唯一的。
	 *     email: {string?},
	 * 
	 *     // 用户创建时间
	 *     // 创建用户账号的时间。
	 *     regTime: {datetime?},
	 * 
	 *     // 锁定时间
	 *     // 用户账号被锁定的时间。
	 *     lockTime: {datetime?},
	 * 
	 *     // 登录时间
	 *     // 用户最后一次登录系统的时间。
	 *     loginTime: {datetime?},
	 * 
	 *     // 登录后首页
	 *     // 用户在登录后进入的页面，由用户自己配置。支持 '~' 作为前缀的路径格式。
	 *     loginHomeUrl: {string?},
	 * 
	 *     // 登录后首页说明
	 *     // 对用户登录后首先进入的页面的说明信息。
	 *     loginHomeDescription: {string?} 
	 * }
	 */
    _api.editUser = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/edituser',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 pk (主键)
            if (!$$.util.is.long(e.args.pk, 0, Long.MAX_VALUE)) {
                e.message = '没有提供有效的主键。';
                return;
            }
            
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 RemoveUser (移除用户) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 主键
	 *     pk: {int64?} 
	 * }
	 * 
	 * 输出(success.result):
	 * null
	 */
    _api.removeUser = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/removeuser',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            // 验证 pk
            if (!$$.util.is.int(e.args, 0, Number.MAX_SAFE_INTEGER)) {
                e.message = '没有提供有效的主键。';
                return;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = {
                // 主键
                pk: e.args
            };
        }
    });

	/*
	 * 功能 Apps (App 列表) 的服务 API。
	 * 
	 * 输入(args):
	 * {}
	 * 
	 * 输出(success.result):
	 * // App 列表
	 * // 系统中已经安装的所有 App 的列表。
	 * list: [{
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 开发者代码
	 *     // App 开发者代码。
	 *     developerCode: {string?},
	 * 
	 *     // 开发者名称
	 *     // App 开发者的名称。
	 *     developerName: {string?},
	 * 
	 *     // App 标识符
	 *     // App 的标识符。
	 *     identifier: {string?},
	 * 
	 *     // App 名称
	 *     // App 的名称。
	 *     name: {string?},
	 * 
	 *     // App 版本
	 *     // App 的版本号。
	 *     version: {string?},
	 * 
	 *     // 模块数目
	 *     // App 中模块的数目。
	 *     moduleCount: {int16?},
	 * 
	 *     // 描述
	 *     // 对 App 的描述信息。
	 *     description: {string?},
	 * 
	 *     // 位置
	 *     // 在导航列表中，App 的先后顺序，这是由系统管理员设置的顺序。
	 *     position: {int32?},
	 * 
	 *     // 安装时间
	 *     // App 的安装时间。
	 *     installTime: {datetime?} 
	 * }, ...]
	 */
    _api.apps = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/apps',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 Modules (模块列表) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 隶属 App 的 Id
	 *     // 模块隶属的 App 的 Id。
	 *     appId: {uuid?},
	 * 
	 *     // 权利人类型代码
	 *     // 权利人类型代码：1-根组织、2-部门、3-工作岗位、4-用户。
	 *     roleType: {int8?},
	 * 
	 *     // 权利对象的 Id
	 *     // 被授权的权利对象的 Id，可能是组织的 Id、部门的 Id、岗位的 Id 或者 用户的 Id。
	 *     roleId: {uuid?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 模块列表
	 * // 隶属于目标 App 的模块的列表。
	 * list: [{
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 隶属 App 的 Id
	 *     // 模块隶属的 App 的 Id。
	 *     appId: {uuid?},
	 * 
	 *     // 位置
	 *     // 模块在同一个 App 中先后显示顺序。
	 *     position: {int16?},
	 * 
	 *     // 标识符
	 *     // 模块的标识符。
	 *     identifier: {string?},
	 * 
	 *     // 模块名称
	 *     // 模块的名称。
	 *     name: {string?},
	 * 
	 *     // 呈现方式
	 *     // 指示模块应该如何对外呈现：0-Internal，1-UI，2-Service。
	 *     presentation: {int8?},
	 * 
	 *     // 允许匿名访问
	 *     // 指示模块是否允许匿名用户访问和使用。
	 *     allowAnonymous: {bool?},
	 * 
	 *     // 描述
	 *     // 对模块的描述信息。
	 *     description: {string?},
	 * 
	 *     // 授权时间
	 *     // 授予目标权利的时间。
	 *     grantTime: {datetime?},
	 * 
	 *     // 有效截止时间
	 *     // 授权有效截止时间。
	 *     expireTime: {datetime?} 
	 * }, ...]
	 */
    _api.modules = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/modules',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 appId (隶属 App 的 Id)
            if (!$$.util.is.uuid(e.args.appId)) {
                e.message = '没有提供有效的隶属 App 的 Id。';
                return;
            }

            // 验证 roleType (权利人类型代码)
            if (!$$.util.is.int(e.args.roleType, 0, 127)) {
                e.message = '没有提供有效的权利人类型代码。';
                return;
            }

            // 验证 roleId (权利对象的 Id)
            if (!$$.util.is.uuid(e.args.roleId)) {
                e.message = '没有提供有效的权利对象的 Id。';
                return;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 Grant (授权) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 模块的 Id
	 *     // 被授权允许访问的模块的 Id。
	 *     moduleId: {uuid?},
	 * 
	 *     // 权利对象的 Id
	 *     // 被授权的权利对象的 Id，可能是组织的 Id、部门的 Id、岗位的 Id 或者 用户的 Id。
	 *     roleId: {uuid?},
	 * 
	 *     // 权利人类型代码
	 *     // 权利人类型代码：1-根组织、2-部门、3-工作岗位、4-用户。
	 *     roleType: {int8?},
	 * 
	 *     // 有效截止时间
	 *     // 授权有效截止时间。
	 *     expireTime: {datetime?} 
	 * }
	 * 
	 * 输出(success.result):
	 * null
	 */
    _api.grant = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/grant',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 moduleId (模块的 Id)
            if (!$$.util.is.uuid(e.args.moduleId)) {
                e.message = '没有提供有效的模块的 Id。';
                return;
            }

            // 验证 roleId (权利对象的 Id)
            if (!$$.util.is.uuid(e.args.roleId)) {
                e.message = '没有提供有效的权利对象的 Id。';
                return;
            }

            // 验证 roleType (权利人类型代码)
            if (!$$.util.is.int(e.args.roleType, 1, 4)) {
                e.message = '没有提供有效的权利人类型代码。';
                return;
            }
            
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 Revoke (取消授权) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 模块的 Id
	 *     // 被授权允许访问的模块的 Id。
	 *     moduleId: {uuid?},
	 * 
	 *     // 权利对象的 Id
	 *     // 被授权的权利对象的 Id，可能是组织的 Id、部门的 Id、岗位的 Id 或者 用户的 Id。
	 *     roleId: {uuid?},
	 * 
	 *     // 权利人类型代码
	 *     // 权利人类型代码：1-根组织、2-部门、3-工作岗位、4-用户。
	 *     roleType: {int8?} 
	 * }
	 * 
	 * 输出(success.result):
	 * null
	 */
    _api.revoke = $$.api({
        // 请求路径
        url: '~/waln/authority/organization/revoke',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 moduleId (模块的 Id)
            if (!$$.util.is.uuid(e.args.moduleId)) {
                e.message = '没有提供有效的模块的 Id。';
                return;
            }

            // 验证 roleId (权利对象的 Id)
            if (!$$.util.is.uuid(e.args.roleId)) {
                e.message = '没有提供有效的权利对象的 Id。';
                return;
            }

            // 验证 roleType (权利人类型代码)
            if (!$$.util.is.int(e.args.roleType, 1, 4)) {
                e.message = '没有提供有效的权利人类型代码。';
                return;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });
})(jQuery, pittypat, pittypat.namespace('waln.authority.organization'));
